package cn.tedu.oop;
/*本类用于多态中的元素测试*/
public class TestDemo2 {
    public static void main(String[] args) {

//        Animal2 a2=new Cat2();
        Cat2 c=new Cat2();
        System.out.println(c.sum);
        c.eat();
        c.play();
        /*口诀1父类引用，指向子类对象
        口诀2 编译看左边，运行看右边
         */
        Animal2 a=new Cat2();
        System.out.println(a.sum);
        a.eat();
        a.play();
        /*2.多态中，成员变量的使用都是父类的
        3.多态中，方法的声明看的是父类，实现使用的是子类
        4.多态中，如果父子类有同名的静态方法，使用的是父类的
        因为多态对象被看做是父类类型
         */
    }
}
class Animal2{
    int sum=10;
    public void eat(){
        System.out.println("吃啥都行");
    }
    public static void play(){
        System.out.println("玩啥都行");
    }

}
/*多态前提：继承+重写*/
class Cat2 extends Animal2 {
    int sum=100;
    @Override
    public void eat(){
        System.out.println("小猫吃鱼");
    }
    /*注意：静态资源属于类，不存在重写的现象
    只是两个类中的恰好有两个同名的静态方法
     */
    public static void play(){
        System.out.println("小猫爱老鼠");
    }

}
